今天來說一下表格,表格在資料呈現當中,也是滿常用的,可以列表,由上到下,清楚的讓使用者了解內容。
先弄一下簡單的表格 弄一個 4 X 4 的表格
程式說明
TableStyle() 有一些屬性可以設定,這邊挑幾個來說,詳細可以看官方說明文件
ALIGN: 對齊方式
FONTNAME:字體
FONTSIZE:字體大小
VALIGN:上下對齊方式
GRID:框線
TEXTCOLOR:文字顏色
BACKGROUND:背景顏色
參數說明:
第一個: 'ALIGN' 對齊方式
第二個: (0, 0) 套用範圍-開始座標(列, 行),左上角為(0, 0 )
第三個: (-1, -1) 套用範圍-結束座標(列,行), (-1,-1) 為最後一個
第四個: 值
所以 (0, 0) 到 (-1, -1) 就是全部套用,(是由0開始數)
('ALIGN', (0, 0), (-1, -1), 'CENTER'), # 置中對齊
基本上都類似這些參數,但有些屬性會多一兩個參數,可以看原始碼知道。
from reportlab.lib import colors
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import SimpleDocTemplate, TableStyle, Table
pdfmetrics.registerFont(TTFont('kaiu', "font/kaiu.ttf"))
fileName = "example.pdf"
pdfTemplate = SimpleDocTemplate(fileName)
story = []
tableStyle = TableStyle([
('ALIGN', (0, 0), (-1, -1), 'CENTER'), # 置中對齊
('FONTNAME', (0, 0), (-1, -1), 'kaiu'), # 字體
('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # 上下置中
('GRID', (0, 0), (-1, -1), 0.5, colors.black), # 框線黑色,寬度0.5
])
dataList = [
["1", "2", "3", "4"],
["5", "6", "7", "8"],
["9", "10", "11", "12"],
["13", "14", "15", "16"],
]
table = Table(dataList, style=tableStyle)
story.append(table)
pdfTemplate.build(story)
輸出結果,就會看到 一個 4*4 的表格
加點變化吧,設定第一橫排、第一直列背景顏色,淺藍色
第三排第三個 文字顏色改為紅色
完整程式碼
from reportlab.lib import colors
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import SimpleDocTemplate, TableStyle, Table
pdfmetrics.registerFont(TTFont('kaiu', "font/kaiu.ttf"))
fileName = "example.pdf"
pdfTemplate = SimpleDocTemplate(fileName)
story = []
tableStyle = TableStyle([
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, -1), 'kaiu'),
('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
('GRID', (0, 0), (-1, -1), 0.5, colors.black),
('BACKGROUND', (0, 0), (0, -1), colors.lightblue),
('BACKGROUND', (0, 0), (-1, 0), colors.lightblue),
('TEXTCOLOR', (2, 2), (2, 2), colors.red),
])
dataList = [
["1", "2", "3", "4"],
["5", "6", "7", "8"],
["9", "10", "11", "12"],
["13", "14", "15", "16"],
]
table = Table(dataList, style=tableStyle)
story.append(table)
pdfTemplate.build(story)
輸出結果
可以客製化呈現的樣式,可以多試試其他的屬性。
參考資料: